﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using LapvComponent;
using log4net;
using LapvBussiness;
using LapvWebComponent;

namespace Lapv.page
{
    public partial class CateManager : System.Web.UI.Page
    {
        public string domainStyle = ConfigLapv.Instance.DomainStyle;
        public string domain =ConfigLapv.Instance.DomainAdmin;
        public string userLogin = "";

        
        
        private static readonly ILog log = LogManager.GetLogger(typeof(Lapv).Name);
        protected void Page_Load(object sender, EventArgs e)
        {
            string curUrl = Request.RawUrl.ToString();
            string urlReturn = this.Request.RawUrl.ToString();
            ProviderAdmin.CheckAuthen(urlReturn, 3);
            if (Page.IsPostBack) return;
            BindDl();

        }

        void BindDl()
        {
            try
            {
                List<news_category> lst = null;
                using (lapvwebEntities db = new lapvwebEntities())
                {
                    lst = db.news_category.ToList();
                }
                dtgrid.DataSource = lst;
                dtgrid.DataBind();
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                ((Lapv)this.Master).MessageError = "Quá trình lấy dữ liệu bị lỗi. " + ex.Message;
            }
        }
        protected void dtgrid_ItemDataBound(Object sender, DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.Header)
            {

                news_category ns = (news_category)e.Item.DataItem;
                if (ns != null)
                {
                    if (ns.allowdelete == false)
                    {
                        e.Item.Cells[3].CssClass = "hidden";
                    }
                }
            }
        }
       
        public void Update_ItemCommand(object sender, DataGridCommandEventArgs e)
        {
            try
            {

                int id = 0;
                if (e.CommandArgument.ToString().Trim() != "")
                    id = int.Parse(e.CommandArgument.ToString().Trim());
                switch (e.CommandName.ToString().Trim())
                {
                    case "delete":
                    string msg = "";
                            try{
                                if (id > 0){
                                    using (lapvwebEntities db = new lapvwebEntities())
                                    {
                                        List<news> lst = db.news.Include("news_category").Where(en => en.news_category.id == id && en.news_category.allowdelete == true).ToList();
                                        foreach (news news_ in lst)
                                        {
                                            if (news_ != null)
                                            {
                                                db.DeleteObject(news_);
                                                db.SaveChanges();
                                                msg = "Xóa tin tức thành công. Mã danh mục: " + id;
                                            }
                                        }
                                        news_category obj = db.news_category.Where(ec => ec.id == id && ec.allowdelete == true).FirstOrDefault();
                                        if (obj != null)
                                        {
                                            db.DeleteObject(obj);
                                            db.SaveChanges();
                                            msg += "Xóa danh mục tin thành công. Mã danh mục: " + id;
                                        }
                                        else
                                        {
                                            msg += "Xóa danh mục tin bị lỗi. Mã danh mục: " + id + ". Do không tồn tại danh mục hoặc danh mục tin không cho phép xóa";
                                            ((Lapv)this.Master).MessageError = "Không tồn tại danh mục tin cần xóa hoặc danh mục tin không cho phép xóa";
                                        }
                                    }
                                }
                                else 
                                {
                                    msg = "Xóa danh mục tin bị lỗi. Mã danh mục: "+id+". Do mã danh mục không phù hợp";
                                    ((Lapv)this.Master).MessageError = "Mã danh mục muốn xóa không phù hợp"; 
                                    return; 
                                }
                            }
                            catch (Exception ex)
                            {
                                log.Error(ex.Message, ex);
                                msg = "Xóa danh mục tin bị lỗi. Mã danh mục: " + ID + ". Do " + ex.Message;
                                ((Lapv)this.Master).MessageError = "Có lỗi xảy ra" + ex.Message;

                            }
                            try
                            {
                                int uid = 0;
                                string uname = string.Empty;
                                uid = ProviderAdmin.GetUsserId();
                                if (Session["UserName"] != null)
                                    uname = Session["UserName"].ToString();
                                ProviderAdmin.AddLog(uid, uname, msg, string.Empty, "NEWSCATE_DELETE");
                            }
                            catch (Exception ex)
                            {
                                log.Error(ex.Message, ex);
                            }
                            BindDl();
                            break;
                    case "edit":
                        Response.Redirect(domain + "Pages/CateAdd.aspx?cateid=" + id);
                        break;

                }
       
                
            }
            catch (Exception )
            {
            }

        }
    }
}
